উদাহরণ সহ Entity Relationship Mapping

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Entity Relationships (One-to-One, One-to-Many, Many-to-Many)
164

Entity Relationship Mapping (ERM) হলো Spring Boot ORM-এর মাধ্যমে একাধিক Entity এর মধ্যে সম্পর্ক স্থাপন করার প্রক্রিয়া। এটি ডেটাবেস টেবিলের সম্পর্ক যেমন One-to-One, One-to-Many, Many-to-One, এবং Many-to-Many কে Entity ক্লাসের মধ্যে মডেলিং করতে ব্যবহৃত হয়।


Entity Relationship Mapping-এর ধরন

One-to-One

একটি Entity-এর সাথে অন্য একটি Entity-এর এক-এক সম্পর্ক থাকে।

One-to-Many / Many-to-One

একটি Entity অনেকগুলো Entity এর সাথে সম্পর্কিত থাকতে পারে, কিন্তু অন্য Entity একটি মাত্র Entity এর সাথে সম্পর্কিত।

Many-to-Many

একাধিক Entity একে অপরের সাথে একাধিক সম্পর্কিত হতে পারে।


উদাহরণ: Entity Relationship Mapping

নিচে Employee এবং Department এর মধ্যে One-to-Many সম্পর্ক এবং Project এর সাথে Many-to-Many সম্পর্ক দেখানো হয়েছে।

Entity: Department

import jakarta.persistence.*;
import java.util.List;

@Entity
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    @OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
    private List<Employee> employees;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }
}

Entity: Employee

import jakarta.persistence.*;
import java.util.Set;

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    @ManyToOne
    @JoinColumn(name = "department_id")
    private Department department;

    @ManyToMany
    @JoinTable(
        name = "employee_project",
        joinColumns = @JoinColumn(name = "employee_id"),
        inverseJoinColumns = @JoinColumn(name = "project_id")
    )
    private Set<Project> projects;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    public Set<Project> getProjects() {
        return projects;
    }

    public void setProjects(Set<Project> projects) {
        this.projects = projects;
    }
}

Entity: Project

import jakarta.persistence.*;
import java.util.Set;

@Entity
public class Project {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String projectName;

    @ManyToMany(mappedBy = "projects")
    private Set<Employee> employees;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public Set<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
}

টেবিল স্কিমা (Database Schema)

Spring Boot চালু করার পর Hibernate নিম্নোক্ত টেবিলগুলো তৈরি করবে:

  1. Department Table

    CREATE TABLE department (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255)
    );
    
  2. Employee Table

    CREATE TABLE employee (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255),
        department_id BIGINT,
        FOREIGN KEY (department_id) REFERENCES department(id)
    );
    
  3. Project Table

    CREATE TABLE project (
        id BIGINT AUTO_INCREMENT PRIMARY KEY,
        project_name VARCHAR(255)
    );
    
  4. Employee_Project Join Table

    CREATE TABLE employee_project (
        employee_id BIGINT,
        project_id BIGINT,
        PRIMARY KEY (employee_id, project_id),
        FOREIGN KEY (employee_id) REFERENCES employee(id),
        FOREIGN KEY (project_id) REFERENCES project(id)
    );
    

REST API উদাহরণ

EmployeeController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/employees")
public class EmployeeController {

    @Autowired
    private EmployeeRepository employeeRepository;

    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    @PostMapping
    public Employee createEmployee(@RequestBody Employee employee) {
        return employeeRepository.save(employee);
    }
}

উপসংহার

Entity Relationship Mapping এর মাধ্যমে ডেটাবেস টেবিলের মধ্যে সম্পর্ক Spring Boot এবং JPA ব্যবহার করে সহজে মডেল করা যায়। এটি ডেটাবেস অপারেশনকে আরও সংগঠিত, দ্রুত এবং উন্নত করে। @OneToOne, @OneToMany, @ManyToOne, এবং @ManyToMany অ্যানোটেশন ব্যবহার করে সম্পর্ক গঠন করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...